Services are software services that are annotated with additional information to provide a useful abstraction for a business purpose. A service is a discrete piece of logic with a defined set of capabilities for input and output. The following are examples of services:                Java programs,        Portlets, and        Web services.Web Services        
The promise of the Internet is an open e-business platform where companies can do business spontaneously with anyone, anywhere, and anytime without requiring that companies abandon their existing software applications and infrastructures. Increasingly companies rely on the Internet to obtain loosely coupled Web services deployed by Web service providers on application-based servers, which are computers on networks that manage the networks.
Web services are business-enterprise computer applications that can be utilized singly or collectively to accomplish a wide range of intended purposes, such as determining health-care patients' eligibility for benefits, submitting health-care claims, and providing stock quotes. Web services help companies dramatically cut costs, increase revenues, and improve competitive agility by combining existing, heterogeneous systems into cross-functional, multi-company applications. For example, Web services designed for insurance companies help them rapidly automate their business processes, eliminating paper and manual touches and saving them tens of millions of dollars annually. To supply such valuable and widely needed services, Web services providers may offer multiple Web services to client businesses.
Because Web services can operate independently of a particular computer language, platform, or location, a client business and a Web service may each use different computer languages, platforms, and locations in widely distributed systems over one or more networks.
Open Web service standards have been developed for compatibility among Web service applications. A standard called SOAP (Simple Object Access Protocol) has been developed to define the format of messages exchanged among applications. The content of messages, such as a request for an action to be performed by a Web service, is currently described in WSDL (Web Services Description Language), which is an XML (Extensible Markup Language)-formatted language and which serves as a Web service's interface. Web services are cataloged in a Web based directory and infrastructure called UDDI (Universal Description, Discover and Integration), which is an Internet registry where businesses list themselves according to their services. Communications between a client business and a Web service further rely on the use of a shared transport protocol, such as HTTP (Hypertext Transport Protocol), which enables communications over the Internet.
Typically a client business employs a client application to communicate from its Web site over the Internet according to these standards, to obtain the Web services offered by a Web service provider from its server-based Web site. The Web service provide uses the same standards to reply to a client. Other known or not-yet-known Web service protocols and standards may be used for this communications.
The Web service end point is the physical location of the Web service on a sever and implements the Web service interface.
Web Services Applications
Web services applications are computer applications that use Web services singly or collectively to accomplish intended purposes. To work with a specific Web services application, a Web service needs accept business documents, process them, and pass them on in ways compatible with the Web service application.
A Web service application typically consists of one or more Web services, a document that describes how those Web services are to be used, Web portal pages, and UDDI entries.
FIG. 1 shows an example of how multiple chained Web services are typically used as part of a Web service application for the filing and payment of medical insurance claims. Chained Web services are loosely connected Web services that may reside on different servers and that may be provided by separate businesses. A Web service provider employs a server 100 running a Web portal page 200 and a Web service application 300.
A Web portal page 200 is a Web site interface that a person can reach over the Internet. Web site interfaces are computer-programmed modules that allow end-users to select variables and parameters from easy-to-use visual displays or to type in this input, save the information through selecting a save option, and have their selections automatically applied by computer subsequently, without those users having to program the information manually.
In this example, an attendant at a clinic computer 150 can use the Internet, through a wired link 144, a telephone network 130, and another wired link 142, to reach the portal Web page 200 on the Web service provider server 100. The attendant can then use the portal Web page 200 to fill out a claim file form 220 for one of the clinic's patients and submit it to Web service application 1 300.
Other means for submitting claims also exist. For example, an attendant at a clinic computer 150 might use link 144, network 130, and link 142 for a machine-to-machine transmission of a claim file directly to Web service application 1 300. Many kinds of wired and unwired links and networks could used for this machine-to-machine transmission, such as the Internet, a private LAN (Local Area Network), a wireless network, a TCP/IP (Transmission Control Protocol/Internet Protocol) network, or other communications system.
To continue with the example, Web service application 1 300 receives each claim file through Web service 1 410, which relays the data back over link 142, network 139, and link 143 to server 2 182. If necessary, Web service 2 420 transforms the format of the claim file to a format that Web service application 1 300 can use for its full operations. For example, a claim file might have been sent in NSF (National Standard Format) format, but Web service application 1 300 might require HIPAA (Health Insurance Portability and Accountability Act) format.
After the claim file is transformed to the correct message format, Web service 2 420 relays the data back over link 142, network 139, and link 145 to Web service 3 430, which is used to validate the claim file. In turn, Web service 3 430 relays the data back over link 142, network 139, and link 147 to Web service 4 440 is used to send the claim file back over link 142, network 130, and link 148 to an insurance company server 170 for payment to the clinic.
For Web service application 1 300 to carry out its operations successfully, the chained Web services 410, 420, 430, and 440 must be compatible and functional. However, when Web services 410, 420, 430, and 440 are on the servers of different Web service providers, they may not have been set up with compatible communication dimensions, which can make interoperability among them impossible. Moreover, if one Web service is dysfunctional, the chain may be broken and the operations blocked.
For example, the following list shows typical examples of communications dimensions that may require compatibility:                Response time settings        Error rate settings        Message formats, such as SOAP flavors or NSF or HIPAA formats        Security features, such as username and password        Management features, such as the clients service level and software versions.        Routing information through the chain of Web services        
Furthermore, if Web service 2 420 is dysfunctional at a particular time, because of a power failure, for example, Web service application 1 410 cannot complete its operations. In such a case, to follow the example in FIG. 1, patients' claims could not be submitted to a payer.
For these reasons, methods are needed that can ensure compatibility among chained Web services and that can substitute functionality from other similar Web servers in the chain when one Web service is down.
Prior Techniques
Typically programmers must manually program substantial portions of the Web services chained in an application to ensure compatibility and functionality in spite of Web service breakdowns.
For example, FIG. 1A shows an operating environment where multiple chained Web services 420, 430, and 440 on separate servers 182, 184, and 186 are used in conjunction for a client computer 150 through an orchestration engine 300 programmed on an additional server 100. The orchestration engine 300 serves as a broker to arrange for the proper use of the different Web services 420, 430, and 440 in appropriate ways and at appropriate times.
However, manual programming is time-consuming and requires special and expensive programming skill, which makes it expensive. Furthermore, a pre-programmed orchestration engine on a separate server is an additional expense and may not provide adequate flexibility for the many conceivable steps required for the successful orchestration of multiple Web services.
Therefore there is a need for a method and apparatus that provides a more automatic method for ensuring compatibility among chained Web services and for replacing the operations of a dysfunctional Web service in the chain.